
Scalar c {
    c.text = Text {
        string = c.label
    }
    c.shape = Circle {
    }

    c.textCenterFn = encourage center(c.text)
    -- c.centerFn = encourage center(c.shape)
    -- c.centerFn = encourage x(c.shape.name)
    -- c.centerFn = encourage x(c.shape.x)
}

Scalar `a` {
    override `a`.shape.color = rgba(0.0, 1.0, 0.0, 0.5)
    -- override `a`.shape.x = 50.0
}

Scalar `a`; Scalar `c` {
    -- `a`.containFn = ensure contains(`c`.shape, `a`.shape)
}

-- Scalar `a`; Scalar `c` {
    -- `a`.nearFn = encourage near(`c`.shape, `a`.shape)
-- }

-- Scalar `m` {
  -- `m`.shape.x = 2.5 + 0.2
  -- `m`.shape.y = `m`.shape.r + `m`.shape.stroke-width + `m`.shape.x
--
  -- `m`.inFn = ensure lessThan(`m`.shape.y, 10 + 3)
-- }

  -- TODO: document how order of statements affects eval
  -- TODO: add more nested computation, test cyclic computation
